#!/bin/sh

# 无参数时，仅停止进程。调试杀死进程时使用 
# 只有一个参数且参数为1时，停止进程，删除库、启动脚本。安装更新时使用
# 只有一个参数且参数为2时，停止进程，删除库、启动脚本、删除数据库文件。完全卸载时使用
# 完全卸载时，/tmp/install_*.bin(安装包)、/usr/sbin/*.sh(本文件) /etc/project.conf未删除。

if [ -f "/tmp/package/files/etc/project.conf" ]
then
	source /tmp/package/files/etc/project.conf
fi

if [ -f "/etc/project.conf" ]
then
	source /etc/project.conf 
fi

echo "[${USER}][`date`] - 运行 $0 $@" >> ${LOG_FILE}

echo "[${USER}][`date`] - 卸载程序" >> ${LOG_FILE}
echo "[${USER}][`date`] - 卸载程序"

#echo "app_list:${app_list}"

close_process(){
	for app in ${app_list}
	do
		guard=guard_${app}.sh
		# killall -9 ${guard} > /dev/null 2>&1
		# killall -9 ${app} > /dev/null 2>&1
		# 1.先关闭守护进程
		guard_line=` ps|grep "${guard}"|grep -v grep|wc -l`
		if [ ${guard_line} -ne 0 ]; then
			guard_pid=` ps | grep ${guard} | grep -v grep | awk '{print $1}'`
			echo "[${USER}][`date`] - kill -9 [${guard_pid}]${guard}" >> ${LOG_FILE}
			kill -9 ${guard_pid} 
		fi
		
		# 2.再关闭用户进程
		app_line=`ps|grep "${app}"|grep -v grep|wc -l`
		if [ ${app_line} -ne 0 ]; then
			app_pid=` ps | grep ${app} | grep -v grep | awk '{print $1}'`
			echo "[${USER}][`date`] - kill -9 [${app_pid}]${app}" >> ${LOG_FILE}
			kill -9 ${app_pid}
		fi
		
		unset guard
	done
}


rm_file(){
	dir=$1
	path=$1/$2
	if [ -f $path ]; then
		mkdir -p ${DEST}$dir
		${RM} $path ${DEST}$dir
		echo "${RM} $path ${DEST}$dir" 
		echo "${RM} $path ${DEST}$dir"	>> ${LOG_FILE}
	fi

}
# 关闭进程，
close_process
RM="mv"
#RM="rm -rf"
if [ "${RM}" = "mv" ]
then
	DEST=/tmp/app_old
	mkdir -p ${DEST}
fi
# 有一个参数时，删除数据
if [ $# -eq 1 ]; then
	# 卸载时避免位于删除的目录里
	cd /tmp
	rm_file ${prj_com_lib_path} "*"
	rm_file ${prj_startup_path} ${prj_startup_sh} 

	# 删除自己和工程配置文件
	#${RM} ${prj_uninstall_path}/${prj_uninstall_sh}
	#${RM} ${prj_conf_path}/${prj_conf_sh} ${DEST}
	
	# 删除程序目录
	for index in ${app_on_list}
	do
		app=`echo ${app_list}|awk -F ' ' '{print $'$index'}'`
		app_device_folder=`echo ${app_device_folder_list}|awk -F ' ' '{print $'$index'}'`
		# 第一个参数为1时，保留其他数据，如数据库，参数配置
		if [ $1 -eq 1 ]; then
			rm_file ${prj_app_path}/${app_device_folder} ${app} 
			rm_file ${prj_app_path}/${app_device_folder} guard_${app}.sh 

		elif [ $1 -eq 2 ]; then
		# 第一个参数为2时，完全删除
			rm_file ${prj_app_path}/${app_device_folder} "*"
			
		fi
		
	done

fi

echo "[${USER}][`date`] - 卸载成功" >> ${LOG_FILE}
echo "[${USER}][`date`] - 卸载成功"
